package com.qianfeng.teachdemo.ui.volley;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;


import com.qianfeng.teachdemo.R;
import com.qianfeng.teachdemo.adapter.VolleyPagerAdapter;
import com.qianfeng.teachdemo.fragment.ImageFragment;
import com.qianfeng.teachdemo.fragment.ImageLoaderFragment;
import com.qianfeng.teachdemo.fragment.JsonArrayFragment;
import com.qianfeng.teachdemo.fragment.JsonObjectFragment;
import com.qianfeng.teachdemo.fragment.NetWorkImageViewFragment;
import com.qianfeng.teachdemo.fragment.StringRequestFragment;
import com.qianfeng.teachdemo.ui.BaseActivity;

import java.util.ArrayList;

/**
 * @version v1.0
 * @类描述： 框架简介:
 * 一.Volley是谷歌2013年IO大会上提出的一套解决网络通信和图片异步加载功能的框架
 * 二.为什么要使用Volley框架?
 * Android提供网络通信的两种方式 1.HttpClicent 建议在2.3之前的版本使用,bug少
 * 2.HttpUrlConnection建议2.3以后使用,他api简单,体积小,非常适合移动项目这种轻量级的项目,压缩和缓存机制可以有效的介绍网络访问的流量,在替身速度和省电方面也起到了很大的作用
 * Volley是Android平台上的网络通信库，能使网络通信更快，更简单，更健壮。
 * 三.功能介绍:
 * 1.数据加载,图片异步下载
 * 2.网络请求排序
 * 3.缓存功能
 * 4.多级别任务取消
 * 5.和Activity的生命周期联动(Activity结束以后可以取消所有网络请求)
 * 四.案例,模板回调模式讲解
 * 五.Volley框架的使用
 * 1.StringRequest
 * 2.JsonObjectRequest
 * 3.JsonArrayRequest
 * 4.ImageRequest
 * 5.ImageLoader(讲解原理,解决图片错位问题)
 * 6.NetWorkImageView
 * 六.Volley框架源码解析
 * 1.讲解Volley框架的工作流程
 * @项目名称：StudyDemo
 * @包 名： com.qianfeng.studydemo.ui.volley
 * @类名称：VolleyActivity
 * @创建人：张唯
 * @创建时间：14-10-1
 * @修改人：
 * @修改时间：
 * @修改备注：
 */
public class VolleyActivity extends BaseActivity implements ActionBar.TabListener, ViewPager.OnPageChangeListener {
    private ActionBar actionBar;
    private ViewPager viewPager;
    private VolleyPagerAdapter adapter;
    private ArrayList<Fragment> fragments = new ArrayList<Fragment>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_volley);
        initViewPager();
        initActionBar();
    }

    private void initViewPager() {
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        fragments.add(StringRequestFragment.newInstance());
        fragments.add(JsonArrayFragment.newInstance());
        fragments.add(JsonObjectFragment.newInstance());
        fragments.add(ImageFragment.newInstance());
        fragments.add(ImageLoaderFragment.newInstance());
        fragments.add(NetWorkImageViewFragment.newInstance());
        adapter = new VolleyPagerAdapter(fragments, getSupportFragmentManager());
        viewPager.setAdapter(adapter);
        viewPager.setOnPageChangeListener(this);
    }

    public void initActionBar() {
        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setIcon(R.drawable.ic_launcher);
        actionBar.setTitle("Volley框架的使用");
        actionBar.addTab(actionBar.newTab().setText("String").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("JsonObject").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("JsonArray").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("Image").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("ImageLoader").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("NetWorkImageview").setTabListener(this));
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

    }

    @Override
    public void onPageScrolled(int i, float v, int i2) {

    }

    @Override
    public void onPageSelected(int i) {
        actionBar.setSelectedNavigationItem(i);
    }

    @Override
    public void onPageScrollStateChanged(int i) {

    }


    @Override
    protected void onStop() {
        super.onStop();
    }
}
